/**
 * Copyright (C) 2024-2030 Super BilGen & 超亿时代信息技术股份有限公司.All Rights Reserved.
 */
package cn.com.yang.pool;

import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.PooledObjectFactory;
import org.apache.commons.pool2.impl.DefaultPooledObject;

/**
 * @Model cn.com.yang.pool.MyObjectFactory
 * @Desc  TODO
 * @author yangyijin
 * @since 2025年3月7日-下午5:13:29
 */

//实现 PooledObjectFactory，用于管理 MyObject 的创建、销毁等
public class MyObjectFactory implements PooledObjectFactory<MyObject> {

 @Override
 public PooledObject<MyObject> makeObject() throws Exception {
     // 创建新的 MyObject 对象
     MyObject obj = new MyObject();
     return new DefaultPooledObject<>(obj);  // 将对象包装成 PooledObject 并返回
 }

 @Override
 public void destroyObject(PooledObject<MyObject> p) throws Exception {
     // 销毁 MyObject 对象，释放资源
     p.getObject().close();  // 调用 MyObject 的 close 方法来释放资源
 }

 @Override
 public boolean validateObject(PooledObject<MyObject> p) {
     // 验证对象是否有效，示例中判断对象的 valid 状态
     return p.getObject().isValid();
 }

 @Override
 public void activateObject(PooledObject<MyObject> p) throws Exception {
     // 激活对象时的操作
     System.out.println("Activating MyObject");
 }

 @Override
 public void passivateObject(PooledObject<MyObject> p) throws Exception {
     // 在对象返回池中前执行的操作
     System.out.println("Passivating MyObject");
 }
}

